<?php  
require_once('../zAPI/properties.inc.php');
require_once( ROOT_CLASS . 'Kernel.class.php');
require_once( $kernel->getClass("Util") );
require_once( $kernel->getClass("BusinessObject") );
require_once( ROOT_CLASS . 'DataObject/ProjetoDO.class.php');
require_once( ROOT_CLASS . 'DataObject/ProjetoAlunoDO.class.php');
require_once( ROOT_DATA_OBJECT . 'DataObject.class.php');
require_once( ROOT_CLASS . 'zAccess/zAccess.class.php' );
?>

<?php 

class ProjetoController{
	
	function __construct(){
		$AccessAction = new AccessAction();
		$AccessAction->validSessionUsuario();
    }
	
	function listarProjetos($instanceDB, $postRequest, $getRequest){
		
		$limit = $postRequest["limit"]; // var usada para controlar o limite de paginação
		$start = $postRequest["start"]; // variável usada para controlar o in?cio de paginação
		$filter = $postRequest["query"];
		
		$projetoBO = new ProjetoBO();
		
		$result = $projetoBO->listarProjetos($instanceDB, $limit, $start, $filter);
		
		for($i=0; $i < count($result["object"]); $i++){
			
			$valorEstimadoProjeto = $projetoBO->calculaEstimativaCusto($instanceDB, $result["object"][$i]->get("codigo"));
			$progressoProjeto = $projetoBO->calculaProgresso($instanceDB, $result["object"][$i]->get("codigo"));
			$terminoPrevisto = $projetoBO->maxDataAtividade($instanceDB, $result["object"][$i]->get("codigo"));
			
			$result["object"][$i]->add("valorEstimadoProjeto",$valorEstimadoProjeto);
			$result["object"][$i]->add("progresso",$progressoProjeto);
			$result["object"][$i]->add("terminoPrevisto",$terminoPrevisto[0]->get("maxData"));			
			
		}
		
		$retorno = "{";
		$retorno .= "success 	: true,";
		$retorno .= "message	: 'Projetos listados com sucesso',";
		$dados = "";
		$aux = "";
		for ($i = 0; $i < count($result["object"]); $i++){
			$dados .= $aux . utf8_encode( $result["object"][$i]->transformDataObjectToJSON() );
			$aux = ",";
		}
		$retorno .= "results:".$result["qtdRegistros"].",";
		$retorno .= "elements : [" . $dados . "]";
		$retorno .= "}";
			
		return $retorno;
	
	}
	

	function inserir($instanceDB, $postRequest, $getRequest){
		
		$projetoBO = new ProjetoBO();
		$projetoDO = new ProjetoDO();
		
		$projetoDO->loadDataObjectByPost( $_POST, TRUE );
		if ($this->validaDatas ($projetoDO)){		
			$result = $projetoBO->inserir($instanceDB, $projetoDO);
			
			if ( $result === FALSE ){
				$retorno = "{";
				$retorno .="success : false,";
				$retorno .="message : 'Não foi possível inserir as informações.'";
				$retorno .="}";
			} else {
				$retorno .="{";
				$retorno .="success : true,";
				$retorno .="message : 'Inserido com com sucesso!',";
				$dados = "";
				$aux = "";
				for ($i = 0; $i < count($result); $i++){
					$dados .= $aux . utf8_encode( $result[$i]->transformDataObjectToJSON() );
					$aux = ",";
				}
				$retorno .="elements : [" . $dados . "]";
				$retorno .="}";
				
			}
		}
		else{
			$retorno .= "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Incompatibilidade de datas'";
			$retorno .= "}";			
		}
		return $retorno;
		
	}

	
		
	
		
		

	//metodo que verifica se nao existe nenhuma atividade associada ao projeto, para que ele possa ser excluido
	function validaExclusao($instanceDB,$codigoProjeto){
		$projetoBO = new ProjetoBO ();
		$retorno = $projetoBO->quantidadeAtividades($instanceDB,$codigoProjeto);
		if ($retorno[0]->get("total") == '0'){
			return TRUE;
		}
		else { return FALSE;}
	}
	

		
	
	function excluir($instanceDB, $postRequest, $getRequest){
			
		$projetoBO = new ProjetoBO();
		
		$projetoDO = new ProjetoDO();
		
		$codigoProjeto = $_POST["codigoProjeto"];
		
		if ($this->validaExclusao($instanceDB,$codigoProjeto)){
			$projetoDO->set( "codigo", $codigoProjeto );
		
			$resultadoProjeto = $projetoBO->excluir( $instanceDB, $projetoDO );
		
			if ( $resultadoProjeto === FALSE){
				$retorno = "{";
				$retorno .= "success : false,";
				$retorno .= "message : 'Não foi possível excluir o registro.'";
				$retorno .= "}";
			}else {
				$retorno .= "{";
				$retorno .= "success : true,";
				$retorno .= "message : 'Excluído com sucesso!'";
				$retorno .= "}";
			}
		}else{
			$retorno .= "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possíivel excluir o projeto, existem atividades associadas!'";
			$retorno .= "}";			
		}
		return $retorno;
	}


	function alterar($instanceDB, $postRequest, $getRequest){

		$projetoBO = new ProjetoBO();
		$projetoDO = new ProjetoDO();
		
		$projetoDO->loadDataObjectByPost( $_POST, TRUE );
		
		if ($this->validaDatas ($projetoDO)){
			$resultadoProjeto = $projetoBO->alterar( $instanceDB, $projetoDO );
				
			if ( $resultadoProjeto === FALSE){
				$retorno = "{";
				$retorno .= "success : false,";
				$retorno .= "message : 'Não foi possível alterar o registro.'";
				$retorno .= "}";
			}else {
				$retorno .=  "{";
				$retorno .= "success : true,";
				$retorno .= "message : 'Alterado com sucesso!'";
				$retorno .= "}";
			}
		}
		else {
				$retorno .= "{";
				$retorno .="success : false,";
				$retorno .="message : 'Incompatibilidade nos valores de data. Não foi possível inserir as informações.'";
				$retorno .="}";				
		}
		
		return $retorno;
	}
	
	/*
	 * Esse método verifica de a data inicio é menor ou igual a data fim
	 * Verifica se a dataRealizacao esta dentro do periodo da data de inicio e fim
	 */
	function validaDatas ($projetoDO){
		$dataRealizacao = $projetoDO->get("dataRealizacao");
		
		$dataInicio = $projetoDO->get("dataInicio");
		$dataFim = $projetoDO->get("dataFim");
				
		$objKernel = new Kernel();
		if ($dataRealizacao <> ''){
			if (strtotime($objKernel->stringToSqlDate($dataInicio)) <= strtotime($objKernel->stringToSqlDate($dataFim)) & 
				strtotime($objKernel->stringToSqlDate($dataRealizacao)) <= strtotime($objKernel->stringToSqlDate($dataFim)) & 
				strtotime($objKernel->stringToSqlDate($dataRealizacao)) >= strtotime($objKernel->stringToSqlDate($dataInicio))){
				return TRUE;
			}
			else { 	return FALSE; 
			}
		}
		else {
			if (strtotime($objKernel->stringToSqlDate($dataInicio)) <= strtotime($objKernel->stringToSqlDate($dataFim))){
				return TRUE;
			}
			else { 	return FALSE; 
			}
			
		}	
	}

	function listarVoluntarioProjeto($instanceDB, $postRequest, $getRequest){
			
		$projetoBO = new ProjetoBO();
		$voluntariosProjeto = $projetoBO->listarVoluntarioProjeto($instanceDB, $postRequest["codigoProjeto"]);
		
		if ( $voluntariosProjeto === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível listar os voluntários do projeto'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Voluntários listados com sucesso',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($voluntariosProjeto); $i++){
				$dados .= $aux . utf8_encode( $voluntariosProjeto[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "elements : [" . $dados . "]";
		$retorno .= "}";
		
		return $retorno;
			
		}
	}


/*	function listarAtividadeComCusto($instanceDB, $postRequest, $getRequest){
		
		$projetoBO = new ProjetoBO();
		$atividadeProjeto = $projetoBO->listarAtividadeComCusto($instanceDB, $postRequest["codigoProjeto"]);
		
		if ( $atividadeProjeto === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível listar as atividades do projeto'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Atividades listadas com sucesso',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($atividadeProjeto); $i++){
				$dados .= $aux . utf8_encode( $atividadeProjeto[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "elements : [" . $dados . "]";
		$retorno .= "}";
			
		return $retorno;
		}
		
	}*/
	
	
	/*
	 * @description: Serviço responsável por calcular o valor estimado do projeto com base nos custos estimados das atividades
	 * @author: Willian Vieira
	 * @params: Default
	 * @return: Objeto json contendo o valor estimado do projeto
	*/
	function calculaEstimativaCusto($instanceDB, $postRequest, $getRequest){
		
		$projetoBO = new ProjetoBO();
		$estimativaProjeto = $projetoBO->calculaEstimativaCusto($instanceDB, $postRequest["codigoProjeto"]);
		
		
		if ( $estimativaProjeto === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular a estimativa'";
			$retorno .= "}";
		}else{
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Estimativa calculada com sucesso',";
			$retorno .= "elements : [{'valorEstimadoProjeto': '".$estimativaProjeto."'}]";
			$retorno .= "}";
		}
		
		return $retorno;

	}	
	
	function capturarProjeto($instanceDB, $postRequest, $getRequest){

		$projetoBO = new ProjetoBO();
		$result = $projetoBO->capturarProjeto($instanceDB, $postRequest["codigoProjeto"]);

		$retorno = "{";
		$retorno .= "success 	: true,";
		$retorno .= "message	: 'Projeto capturado com sucesso',";
		$dados = "";
		$aux = "";
		for ($i = 0; $i < count($result); $i++){
			$dados .= $aux . utf8_encode( $result[$i]->transformDataObjectToJSON() );
			$aux = ",";
		}
		$retorno .= "elements : [" . $dados . "]";
		$retorno .= "}";
				
		return $retorno;
	}
	
	function listarAtividadeGastos($instanceDB, $postRequest, $getRequest){
		
		$projetoBO = new ProjetoBO();
		$atividadeProjeto = $projetoBO->listarAtividadeGastos($instanceDB, $_POST["codigoProjeto"]);
		
		if ( $atividadeProjeto === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível listar os gastos das atividades do projeto'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Gastos das atividades listados com sucesso',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($atividadeProjeto); $i++){
				$dados .= $aux . utf8_encode( $atividadeProjeto[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "elements : [" . $dados . "]";
			$retorno .= "}";
		}
		return $retorno;
	}	
	
	function calculaGastos($instanceDB, $postRequest, $getRequest){
		
		$projetoBO = new ProjetoBO();
		$estimativaProjeto = $projetoBO->calculaGastos($instanceDB, $_POST["codigoProjeto"]);
		
		
		if ( $estimativaProjeto === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular os gastos'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Gastos calculados com sucesso',";
			$retorno .= "elements : [{'valorGastoProjeto': '".$estimativaProjeto."'}]";
			$retorno .= "}";
		
			return $retorno;
			
		}

	}	

	/*
	 * @author				: Willian Silva
	 * @description			: Serviço responsavel por calcular o saldo de um projeto
	 * @params				: Codigo projeto
	 * @return				: Retorna o saldo de um projeto
	*/
	function calculaSaldoProjeto($instanceDB, $postRequest, $getRequest){
			
		$projetoBO = new ProjetoBO();
		$calculaSaldo = $projetoBO->calculaSaldoProjeto($instanceDB, $_POST["codigoProjeto"]);
		
		if ( $calculaSaldo === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular o saldo'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Saldo calculado com sucesso',";
			$retorno .= "elements : [{'saldoProjeto': '".$calculaSaldo."'}]";
			$retorno .= "}";
		
		}
			
		return $retorno;
	}
	
	function listarAtividadeComCusto($instanceDB, $postRequest, $getRequest){
		
		$projetoBO = new ProjetoBO();
		
		//lista de todas as atividades com custo
		$atividadeProjeto = $projetoBO->listarAtividadeComCusto($instanceDB, $postRequest["codigoProjeto"]);//
		
		/* Calculando o valor real das atividades com custo e a variação (estimado X valor real)*/
		
		$valorOpeAtividadeComMovCaixa = array();
		//lista de todas atividades com custo e com movimentação de caixa
		for($i=0;$i < count($atividadeProjeto); $i++){
			//$valorOpeAtividadeComMovCaixa[$i] = $projetoBO->valorOperacao($instanceDB,$atividadeProjeto[$i]->get("codigo"));
			$array = $projetoBO->valorOperacao($instanceDB,$atividadeProjeto[$i]->get("codigo"));
			$valorOpeAtividadeComMovCaixa[$i]=$array[0];			
		}
			for($i=0;$i < count($atividadeProjeto); $i++){
				
				if($valorOpeAtividadeComMovCaixa[$i] != ""){
					$atividadeProjeto[$i]->add("valorReal", $valorOpeAtividadeComMovCaixa[$i]->get("valorOpe"));
					$variacaoCusto = ($valorOpeAtividadeComMovCaixa[$i]->get("valorOpe")*100)/($atividadeProjeto[$i]->get("valorEst"));
					$variacaoCusto = ($variacaoCusto-100);
					$atividadeProjeto[$i]->add("variacaoCusto", number_format($variacaoCusto, 2, '.', ','));
					//$teste1 =$atividadeProjeto[$i]->get("valorEst");
					//$teste2= $valorOpeAtividadeComMovCaixa[$i]->get("valorOpe");
					//echo "variacaoCusto = valorEst " .$teste1. "  MENOS valorREAL " .$teste2. "DIVIDIDO POR 100 = " .$variacaoCusto[$i]. "  ";
				}else{
					$atividadeProjeto[$i]->add("valorReal","");
					$atividadeProjeto[$i]->add("variacaoCusto","");
				}
			}

		if ( $atividadeProjeto === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível listar as atividades do projeto'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Atividades listadas com sucesso',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($atividadeProjeto); $i++){
				$dados .= $aux . utf8_encode( $atividadeProjeto[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "elements : [" . $dados . "]";
			$retorno .= "}";
		
		}
		
		return $retorno;
		
	}

	//Metodo que retorna se tem movimento de caixa:
	function retornarValorOperacao($instanceDB, $postRequest, $getRequest)
	{
		$projetoBO = new ProjetoBO();
		$valorOper = $projetoBO->valorOperacao($instanceDB, $_GET["codigo"]);
		
		if ( $valorOper[0] === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular a valor operação'";
			$retorno .= "}";
		}else{
			if(is_null($valorOper[0])){
				$retorno = "{";
				$retorno .= "success : true,";
				$retorno .= "message : 'Objeto está nulo, não existe atividade com movimentação de caixa'";
				$retorno .= "}";
			}	
			else{
				$retorno .= "{";
				$retorno .= "success 	: true,";
				$retorno .= "message	: 'Estimativa calculada com sucesso',";
				$retorno .= "elements : ['valorEstimadoProjeto': '".$valorOper[0]->get("valorOpe")."'";
				$retorno .= "}";
			}	
			
		}
		
		return $retorno;
	}
	
	function custoProjetoSemMovimentoCaixa($instanceDB, $postRequest, $getRequest)
	{
		$projetoBO = new ProjetoBO();
		$custoProjSemMov = $projetoBO->custoProjetoSemMovimentoCaixa($instanceDB, $_POST["codigoProjeto"]);
		if ( $custoProjSemMov[0] === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular os custos sem movimentação de caixa'";
			$retorno .= "}";
		}else{
			if(is_null($custoProjSemMov[0])){
				$retorno = "{";
				$retorno .= "success : true,";
				$retorno .= "message : 'Objeto está nulo, não existe valor estimado para nenhuma atividade'";
				$retorno .= "}";
			}	
			else{
				$retorno .= "{";
				$retorno .= "success 	: true,";
				$retorno .= "message	: 'Custos sem movimentação de caixa calculados com sucesso',";
				$retorno .= "elements : [{'custoProjetoSemMovCaixa': '".$custoProjSemMov[0]->get("valorEst")."'}] ";
				$retorno .= "}";
			}
		}	
		return $retorno;
	}
	
	function custoProjetoComMovimentoCaixa($instanceDB, $postRequest, $getRequest){
		$projetoBO = new ProjetoBO();
		$custoProjComMov = $projetoBO->custoProjetoComMovimentoCaixa($instanceDB,1);
		
		if ( $custoProjComMov === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular os custos com movimentação de caixa'";
			$retorno .= "}";
		}else{
			if(is_null($custoProjComMov[0])){
				$retorno = "{";
				$retorno .= "success : true,";
				$retorno .= "message : 'Objeto está nulo, não existe atividade com movimentação de caixa'";
				$retorno .= "}";
			}else{
				$retorno .= "{";
				$retorno .= "success 	: true,";
				$retorno .= "message	: 'Custos com movimentação de caixa calculados com sucesso',";
				$retorno .= "elements : [{'custoProjetoComMovCaixa': '".$custoProjComMov[0]->get("valorOpe")."'}] ";
				$retorno .= "}";
			}
			
		}
	}
	
	function projecaoEstimativa($instanceDB, $postRequest, $getRequest){
		$projetoBO = new ProjetoBO();
		$projecaoEst = $projetoBO->projecaoEstimativa($instanceDB, $postRequest["codigoProjeto"]);

		if ( $projecaoEst === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular projeção de estimativa de custo'";
			$retorno .= "}";
		}else{
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Projeção de Estimativa de custo calculado com sucesso',";
			$retorno .= "elements : [{'projecaoEstimativa': '".$projecaoEst."' }]";
			$retorno .= "}";
		
			
		}
	return $retorno;	
	}
	
	
	
	function capturarAlunoProjeto($instanceDB, $postRequest, $getRequest){
			$projetoBO = new ProjetoBO();
			$capturarAlunoProjeto = $projetoBO->capturarAlunoProjeto($instanceDB,$_POST["codigoProjeto"],$_POST["codigoAluno"]);
	
			if ( $capturarAlunoProjeto === FALSE ){
				$retorno = "{";
				$retorno .= "success : false,";
				$retorno .= "message : 'Erro ao capturar alunos projeto'";
				$retorno .= "}";
			}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Alunos projeto listados com sucesso',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($capturarAlunoProjeto); $i++){
				$dados .= $aux . utf8_encode( $capturarAlunoProjeto[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "elements : [" . $dados . "]";
			$retorno .= "}";
		}
		return $retorno;	
		}
		
/*
	 * @author				: Willian Silva
	 * @description			: Serviço responsavel por desmatricular um aluno de um projeo
	 * @params				: Codido aluno, codigo do projeto
	 * @return				: Retorna uma mensagem do tipo TRUE ou FALSE
	*/
	function alteraSituacaoMatricula($instanceDB, $postRequest, $getRequest){
			
		$projetoBO = new ProjetoBO();
		//$pessoaBO = new PessoaBO();
	
		// cria objeto de dados para manipulação
		$projetoAlunoDO = new ProjetoAlunoDO();
		//$pessoaDO = new PessoaDO();
		
		//$codigoProjeto = $_POST["codigoProjeto"];
		//$codigoAluno = $_POST["codigoAluno"];
		
		$projetoAlunoDO->loadDataObjectByPost( $_POST, TRUE );
		
		$dataAtual = date('d-m-Y');
		$projetoAlunoDO->set("dataUltimaAlteracao", $dataAtual);
		//$pessoaDO->set( "codigo", $codigoProjeto );
				
		//$resultadoPessoa = $pessoaBO->excluir( $instanceDB, $pessoaDO );
		
		$resultadoAlunoProjeto = $projetoBO->alteraSituacaoMatricula( $instanceDB, $projetoAlunoDO );
		
		if ( $resultadoAlunoProjeto === FALSE){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível desmatricular o aluno'";
			$retorno .= "}";
		}else {
			$retorno .= "{";
			$retorno .= "success : true,";
			$retorno .= "message : 'Aluno desmatriculado com sucesso!'";
			$retorno .= "}";
		}
		
		return $retorno;
					
	}
	
	
	/*
	 * @author				: Willian Silva
	 * @description			: Serviço responsavel por matricular um aluno em um projeo
	 * @params				: Codigo aluno, codigo projeto
	 * @return				: Retorna uma mensagem do tipo TRUE ou FALSE
	*/
	function matricularAluno($instanceDB, $postRequest, $getRequest){
		
		$projetoBO = new ProjetoBO();
				
		$projetoAlunoDO = new ProjetoAlunoDO();
		
		$projetoAlunoDO->loadDataObjectByPost( $_POST, TRUE );
				
		$dataAtual = date('d-m-Y');
		
		$projetoAlunoDO->set("dataCadastro", $dataAtual);
		$result = $projetoBO->matricularAluno($instanceDB, $projetoAlunoDO);
		
		if ( $result === FALSE ){
			$retorno = "{";
			$retorno .="success : false,";
			$retorno .="message : 'Não foi possível matricular o aluno.'";
			$retorno .="}";
		} else {
			$retorno .="{";
			$retorno .="success : true,";
			$retorno .="message : 'Aluno matriculado com sucesso!'";	
			$retorno .="}";
			
		}

		return $retorno;
		
	}	
	
	function excluirMatricula($instanceDB, $postRequest, $getRequest){
			
			$projetoBO = new ProjetoBO();
			//$pessoaBO = new PessoaBO();
		
			// cria objeto de dados para manipulação
			$projetoAlunoDO = new ProjetoAlunoDO();
		
			$codigoProjeto = $_POST["Projeto_codigo"];
			$codigoAluno = $_POST["Aluno_Pessoa_codigo"];
			
			$projetoAlunoDO->set( "Projeto_codigo", $codigoProjeto );
			$projetoAlunoDO->set( "Aluno_Pessoa_codigo", $codigoAluno );
			
			$resultadoAlunoProjeto = $projetoBO->excluirMatricula( $instanceDB, $projetoAlunoDO );
			
			if ( $resultadoAlunoProjeto === FALSE){
				$retorno = "{";
				$retorno .= "success : false,";
				$retorno .= "message : 'Não foi possível excluir matricula do aluno'";
				$retorno .= "}";
			}else {
				$retorno .= "{";
				$retorno .= "success : true,";
				$retorno .= "message : 'Matricula excluida com sucesso!'";
				$retorno .= "}";
			}
			
			return $retorno;
						
	}
	
	
/*
	 * @author				: Willian Silva
	 * @description			: Serviço responsavel por listar alunos matriculados
	 * @params				: Codigo projeto
	 * @return				: Retorna alunos matriculados
	*/
	function listarAlunosMatriculados($instanceDB, $postRequest, $getRequest){
		$projetoBO = new ProjetoBO();
		$listAlunosMatriculados = $projetoBO->listarAlunosMatriculados($instanceDB, $postRequest["Projeto_codigo"]);

		if ( $projecaoEst === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao listar alunos matriculados'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Alunos matriculados listados com sucesso',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($listAlunosMatriculados); $i++){
				$dados .= $aux . utf8_encode( $listAlunosMatriculados[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "elements : [" . $dados . "]";
		$retorno .= "}";
		}
	return $retorno;	
	}
	
	/*
	 * @author				: Willian Silva
	 * @description			: Serviço responsavel por listar alunos desmatriculados
	 * @params				: Codigo projeto
	 * @return				: Retorna alunos desmatriculados
	*/
	function listarAlunosDesmatriculados($instanceDB, $postRequest, $getRequest){
		$projetoBO = new ProjetoBO();
		$listAlununosDesmatriculados = $projetoBO->listarAlunosDesmatriculados($instanceDB, $postRequest["Projeto_codigo"]);

		if ( $projecaoEst === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao listar alunos desmatriculados'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Alunos desmatriculados listados com sucesso',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($listAlununosDesmatriculados); $i++){
				$dados .= $aux . utf8_encode( $listAlununosDesmatriculados[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "elements : [" . $dados . "]";
		$retorno .= "}";
		}
	return $retorno;	
	}
	
}	
?>